package com.srmt.user.example;

import com.srmt.user.api.UserIdResolver;
import com.srmt.user.factory.UserIdResolverFactory;
// import com.srmt.common.config.ServiceConfig; // 已移除，改用ApplicationConfig

/**
 * 用户服务使用示例
 * 
 * @author SRMT Development Team
 * @since 1.0.0
 */
public class UserServiceExample {
    
    public static void main(String[] args) {
        // 方式1：使用快速创建
        quickCreateExample();
        
        // 方式2：使用配置构建器
        builderExample();
        
        // 方式3：使用默认配置
        defaultConfigExample();
        
        // 方式4：与文档服务集成
        integrationExample();
    }
    
    /**
     * 快速创建示例
     */
    private static void quickCreateExample() {
        System.out.println("=== 快速创建示例 ===");
        System.out.println("注意：飞书配置现在从环境变量或系统属性读取");
        System.out.println("请设置FEISHU_APP_ID和FEISHU_APP_SECRET环境变量\n");
        
        // 使用默认配置创建
        UserIdResolver resolver = UserIdResolverFactory.createDefault();
        
        try {
            // 查询用户
            String userId = resolver.getUserIdByPhone("+86-13800138000");
            if (userId != null) {
                System.out.println("找到用户: " + userId);
            } else {
                System.out.println("未找到用户");
            }
        } catch (Exception e) {
            System.out.println("查询失败: " + e.getMessage());
        }
    }
    
    /**
     * 使用配置构建器示例
     */
    private static void builderExample() {
        System.out.println("\n=== 配置构建器示例 ===");
        
        // 设置飞书配置到系统属性
        System.setProperty("feishu.app.id", "your_app_id");
        System.setProperty("feishu.app.secret", "your_app_secret");
        
        // 创建配置 - ServiceConfig已移除，改用ApplicationConfig
        // ApplicationConfig config = new ApplicationConfig();
        // config.getService().setPlatform("feishu");
        // config.getService().getCache().setEnabled(true);
        // config.getService().getCache().setSize(2000);
        // config.getService().getCache().setTtlMinutes(120);
        // config.getService().setTimeout(15000);
        // UserIdResolver resolver = UserIdResolverFactory.create(config);
        
        // 暂时使用默认配置
        UserIdResolver resolver = UserIdResolverFactory.createDefault();
        
        try {
            // 多次查询测试缓存
            String phone = "+86-13800138000";
            
            long start = System.currentTimeMillis();
            String userId1 = resolver.getUserIdByPhone(phone);
            long firstTime = System.currentTimeMillis() - start;
            
            start = System.currentTimeMillis();
            String userId2 = resolver.getUserIdByPhone(phone);
            long secondTime = System.currentTimeMillis() - start;
            
            System.out.println("第一次查询耗时: " + firstTime + "ms");
            System.out.println("第二次查询耗时(缓存): " + secondTime + "ms");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 使用默认配置示例
     */
    private static void defaultConfigExample() {
        System.out.println("\n=== 默认配置示例 ===");
        
        // 需要设置环境变量 FEISHU_APP_ID 和 FEISHU_APP_SECRET
        try {
            UserIdResolver resolver = UserIdResolverFactory.createDefault();
            System.out.println("使用默认配置创建成功！");
            
            // 测试查询
            String userId = resolver.getUserIdByPhone("+86-13800138000");
            if (userId != null) {
                System.out.println("找到用户: " + userId);
            }
        } catch (Exception e) {
            System.out.println("创建失败，请确保设置了环境变量");
            e.printStackTrace();
        }
    }
    
    /**
     * 与文档服务集成示例
     */
    private static void integrationExample() {
        System.out.println("\n=== 与文档服务集成示例 ===");
        
        // 模拟一个文档分享场景
        class DocumentSharingService {
            private final UserIdResolver userResolver;
            
            public DocumentSharingService(UserIdResolver userResolver) {
                this.userResolver = userResolver;
            }
            
            public void shareDocumentByPhone(String docId, String phoneNumber) {
                try {
                    // 通过电话号码获取用户ID
                    String userId = userResolver.getUserIdByPhone(phoneNumber);
                    
                    if (userId != null) {
                        // 使用用户ID进行文档分享
                        System.out.println("分享文档 " + docId + " 给用户 " + userId);
                        // documentService.shareDocument(docId, userId);
                    } else {
                        System.out.println("未找到电话号码对应的用户: " + phoneNumber);
                    }
                    
                } catch (Exception e) {
                    System.err.println("分享失败: " + e.getMessage());
                }
            }
        }
        
        // 使用示例
        try {
            // 设置飞书配置
            System.setProperty("feishu.app.id", "your_app_id");
            System.setProperty("feishu.app.secret", "your_app_secret");
            
            UserIdResolver resolver = UserIdResolverFactory.createDefault();
            DocumentSharingService service = new DocumentSharingService(resolver);
            
            // 通过电话分享文档
            service.shareDocumentByPhone("doc123", "+86-13800138000");
        } catch (Exception e) {
            System.err.println("创建服务失败: " + e.getMessage());
        }
    }
}